The present invention pertains to methods and apparatuses for correcting for gamut limitations of a color device. More particularly, the present invention relates to methods and apparatuses for creating and using data structures which determine the amounts of colorants that a color output device, such as a color printer, prints or uses in response to requests to print specific colors.
Prior to describing the invention, the following definitions are provided.
Tristimulus Valuesxe2x80x94Three numbers that describe the visual response to an original color. Two colors with the same tristimulus values look the same if they are viewed under similar conditions. The common coordinates used for tristimulus values are CIEXYZ.
Luminancexe2x80x94That aspect of a colored stimulus relating to its intensity.
Huexe2x80x94That aspect of a colored stimulus relating to its color name.
Saturationxe2x80x94That aspect of a colored stimulus relating to its purity, or absence of contamination with white.
Gamutxe2x80x94The range of colors producible with a set of inks, lights, or other colorants. The gamut can conveniently be described in terms of a particular volume of a color space.
Chromaticity coordinatesxe2x80x94The chromaticity coordinates of a color result from a mapping of its tristimulus values to two coordinates that describe the color without regard to its luminance. In other words, two colors that correspond in chromaticities differ only in luminance.
The increased availability of color monitors in combination with color printers has allowed computer users to view a full color image on a color monitor and then to request a full color printout of that image on a color printer. Users would like the print to look like the display. Unfortunately, the range of colors available from a printer is typically much smaller than the range of colors available from a monitor. In this instance, the color gamut of the monitor is larger than the color gamut of the printer.
Monitors are typically driven by three digital signals, device-dependent RGB, that determine the intensities of light emission of red, green and blue phosphors, respectively. In practice, the RGB signals are commonly quantized to 8 bits for each signal and represent a set of integer values from [0,255]. In this description, we normalize the set of values for a particular signal to be in the range [0,1]. Thus, RGB=(0,0,0) is monitor black and RGB=(1,1,1) is monitor white. Any three component vector with components in the range [0,1] is a possible input signal to the monitor.
The range of possible colors of the monitor may in theory be determined by displaying all of the possible RGB input combinations (under controlled viewing conditions). Different monitors may display different colors even if they are driven with the same input signal. For example, driving monitors from two different manufacturers with the input (0,0,1) will display different colors if the color of the blue phosphors of the two manufacturers differ.
The communication of color information is often done in a color space that is independent of the particular device. The color spaces commonly used, CIEXYZ (XYZ), CIELAB (Lab), CIELUV and colorimetric or calibrated RGB (calorimetric or calibrated RGB refer to color spaces defined analytically in terms of the other spaces, for example CIEXYZ, and they are not to be confused with device RGB) are tied to a color matching experiment by humans under controlled conditions; see, e.g., R. W. G. Hunt, The Reproduction of Colour in Photography, Printing and Television. 5th Edition, Fountain Press, England 1995; and see Brian A. Wandell, Foundations of Vision Science, Sinsauer Associates, Inc., Sunderland, Mass. 1995. Today, spectroradiometers, spectrophotometers and calorimeters are instruments available that can measure these numbers without the use of human subjects. The behavior of the monitor can be described in a device-independent color space by measuring the display colors for a large number of input device RGB values in terms of XYZ color space, or more commonly in CIELAB or CIELUV.
The printers commonly used today are typically addressed with four digital values, CMYK, that determine the amounts of cyan, magenta, yellow and black colorants (inks, pigments or dyes) that are deposited on paper or transparencies. In this description, (0,0,0,0) represents no colorant and (1,1,1,1) represents full colorant amounts. Any vector with components in the range [0,1] represents an acceptable input signal to the printer. The color behavior of the printer may be described in a device-independent color space, by measuring the colorimetric values for a large number of printed combinations of input CMYK values.
Assuming a smooth color response to the input signal for the printer, we can use a vector valued continuous function to represent the color response of the printer,
c=ƒp(x),xe2x80x83xe2x80x83(Eq. 1)
where x=(C, M, Y, k) is a vector in R4 representing the colorants and c=(A, B, C) is a vector in R3 representing the device-independent colorimetric response to the colorant. Similarly, for the monitor,
d=ƒm(y),xe2x80x83xe2x80x83(Eq. 2)
where y=(R, G, B) is a vector in R3 representing the phosphor driving signals and d=(A, B, C) represents the device-independent colorimetric response to the input signals.
For large patches of uniform color on a monitor, the behavior of the monitor is well characterized by the following formula,                               [                                                                                                                X                                                                                                  Y                                                                                                                          Z                                              ]                =                              [                                                                                m                    11                                                                                        m                    12                                                                                        m                    13                                                                                                                    m                    21                                                                                        m                    22                                                                                        m                    23                                                                                                                    m                    31                                                                                        m                    32                                                                                        m                    33                                                                        ]                    ⁡                      [                                                                                                                                                        t                          ⁡                                                      (                            R                            )                                                                                                                                                                                        t                          ⁡                                                      (                            G                            )                                                                                                                                                                                                                t                    ⁡                                          (                      B                      )                                                                                            ]                                              (                  Eq          .                      xe2x80x83                    ⁢          3                )            
where t is a linearization or xe2x80x9cgammaxe2x80x9d function that maps [0,1] to [0,1] and the matrix M with elements mij is a 3xc3x973 matrix that accounts for the monitor phosphors. The matrix M is determined if one knows the chromaticities of the phosphors (two chromaticity coordinates, derived from XYZ, describe the colors of the phosphors) and the white point of the monitor.
For printers, there are not yet practical formulas describing c=fp(x) so the usual representation of fp(x) involves a table of values together with an interpolation technique such as quadrilinear interpolation or simplex interpolation; see, Printer-related color processing techniques. Henry R. Kang. In Color Hard Copy and Graphic Arts IV, San Jose, Calif., USA, Vol. 2413, pp. 410-419, Bellingham, Wash., 1995. Society of Photo-Optical Instrumentation Engineers.
If we could form a function
z=gp(e)xe2x80x83xe2x80x83(Eq. 4)
where z is a colorant in R4 and e is a device-independent color description in R3 we would have a device-independent way to select colors to be printed on our printer. The process of forming gp given the information in fp is referred to as building a separation table for the printer. The term table is used since a common implementation for the evaluation of gp consists of a table of values for gp together with an interpolation technique.
If the printer is a CMYK printer, a device-independent color may be printed using any number of combinations of the CMYK values. A common practice is to use smoothness side-conditions that allow an xe2x80x9cinversionxe2x80x9d of fp to build the table gp.
Now we can form the transformation
z=gp(ƒm(y))xe2x80x83xe2x80x83(Eq. 5)
to, in theory, provide a faithful transformation from monitor device-dependent RGB, represented in the equation (Eq. 5) by y to printer colorants CMYK, represented in the equation by z. However, there are many monitor colors, say RGB=(0,0,1) that are out-of-gamut for the printer. This means that no combination of CMYK values gives the same color as the monitor RGB=(0,0,1). The printer still needs to print some values of CMYK. Determining the choice of this CMYK (and similarly, determining the choice of CMYK for all of the other out-of-gamut colors) comprises the gamut mapping problem. The gamut mapping strategy is used at the time the table is built in order to select CMYK outputs for those device-independent values, e, that are out-of-gamut.
To print an image, input values are transformed by interpolation in the multi-dimensional table, regardless of whether the nodes are in-gamut or out-of-gamut. The gamut mapping is implicit in the table constructed.
An example of a gamut mapping strategy is to map along lines of constant hue, defined to be, tan-l(b/a) in CIELAB space. A common problem with this approach is that the Lab colors corresponding to monitor blues will map to a color that will appear purple on print, as shown in FIG. 1. This problem occurs because, even though Lab is known as a xe2x80x9cuniformxe2x80x9d color space, it is not true that a series of colors along a constant Lab hue result in colors of the same name. A set of colors of constant color name would lie on a curve in Lab space, and not on a constant Lab hue line.
Several more elaborate gamut mapping techniques have been developed which perform various warps on the color space in order to take into account the curvature of perceived hue in the color spaces in order to provide better gamut-mapping techniques. For example, the gamut mapping process described in U.S. Pat. No. 5,438,649 attempts to modify the hue angle of values stored in a color separation table after the separation table has been created. Another elaborate gamut mapping technique is described in U.S. Pat. No. 5,539,540. This patent describes the use of different gamut mapping strategies such as one employing a traditional compression technique for a portion of an image to be printed and the use of another color-mapping strategy that works for business graphic images on a different region of the image and then warping the two to preserve continuity and smoothness using a computer morphing technique. These two examples of elaborate gamut-mapping techniques provide certain advantages, but nonetheless are relatively complicated and are complex to control. The warping technique may be computationally burdensome to a digital image processing system.
It is desirable to provide an enhanced gamut-mapping technique which corrects for gamut limitations of an output color device while at the same time imposing fewer computational burdens and also allowing ease of control over the gamut mapping process.
In one aspect of the present invention, an improved gamut mapping technique consists of redefining the red, green, and blue monitor chromaticities to values for which corresponding hues appear as intended. This technique in effect defines a predefined color space for use in gamut correction where the predefined color space is based upon a set of redefined monitor chromaticities which are typically used in the transformation function for transforming color values from one color space, such as RGB, to another color space. In a typical implementation of this aspect of the present invention, the technique consists of generating the appropriate color separation tables using a normal gamut mapping strategy with typical monitor chromaticities and again generating a color separation table, typically the same size as the first color separation table, using the new monitor chromaticity values. A gamut surface generated using the original chromaticities is then used to determine what is in gamut and what is out of gamut. The two color separation tables are then combined such that points which lie in gamut use the values from the first color separation table while points which lie out of gamut use values from the second color separation table. To prevent potential harsh transitions between points lying near the gamut surface, one embodiment of the present invention uses a blending function to blend these points by combining values from the two separation tables. Using this technique, colors which fall in gamut still appear as intended, while color values which are out of gamut now map to colors which subjectively more closely resemble the intended colors.
In another aspect of the present invention, two complete color separation lookup tables are created and then combined. A first color separation table is created, where this table determines a conversion from a first set of color values to a first set of colorant values. A second color separation table is also created, which table determines a conversion from the first set of color values to a second set of colorant values. Then a final color separation lookup table is created by using the first set of colorant values and the second set of colorant values.
The methods of the present invention may be practiced by the use of a color printer lookup table or by hardware or a hardware and software combination. For example, a lookup table according to one embodiment of the present invention provides colorant values in a colorant space given a corresponding color in a first color space. The lookup table has a first set of values and a second set of values. The first set of values are derived from a first color space to colorant conversion. This first set is used to provide a colorant value for a color in the first color space which is within a gamut of a color printer or other color output device. The second set of values is derived from a predefined color space to colorant conversion process, where the predefined color space is for use in gamut correction due to gamut limitations of the output device. The predefined color space is specified by a set of redefined monitor chromaticities. A process for printing a color image according to the present invention is also described. In this process, an input color specified by input color values is received, and these input color values are used to obtain values from a memory, such as RAM, which contains a data structure, such as a lookup table, having the first set of values and the second set of values. If the input color values are in gamut (of the output device) then the first set of values is used to provide a colorant value. If the input color values are out of gamut then the second set of values derived from a conversion between the predefined color space and the colorant space is used to provide a colorant value.
The present invention also provides a blending technique in order to blend values in the first and second set of values for those color input values which are near the gamut surface of the output color device.